package estados.grafo;

import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;

import tiposEnumerados.EventoAtualT;

import Classes.AplicacaoGUI;
import Classes.Aresta;
import Classes.GrafoGUI;
import Classes.Vertice;

public class GrafoEstadoAddArestas extends GrafoEstado{
	
	public GrafoEstadoAddArestas(GrafoGUI refGrafoGUI) {
		super(refGrafoGUI);
	}
	
	public void executarAcaoBotao(MouseEvent evMouse, KeyEvent evTeclado, EventoAtualT evAtual) {
		Vertice verticeI,verticeJ ;
		boolean existeArestaLigandoV1eV2 ;
		for (int i = 0 ; i < refGrafoGUI.getVerticesSelecionados().size();i++) {
			for (int j = i+1 ; j < refGrafoGUI.getVerticesSelecionados().size(); j++) {
				verticeI = refGrafoGUI.getVerticesSelecionados().get(i) ;
				verticeJ = refGrafoGUI.getVerticesSelecionados().get(j) ;		
				existeArestaLigandoV1eV2 = false ;	
				for (Aresta areAux : verticeI.getIncidentes()) {
					if (areAux.Oposto(verticeI) == verticeJ) {
						existeArestaLigandoV1eV2 = true ;
						break ;
					}
				}				
				if (!existeArestaLigandoV1eV2) {
					Aresta a = new Aresta(verticeI,verticeJ) ;
					verticeI.getIncidentes().add(a) ;
					verticeJ.getIncidentes().add(a) ;
					refGrafoGUI.getGrafo().getArestas().add(a) ;
				}
			}
		}
	}


}
